package com.example.temp.common;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;

public class ExcelParseUtil {

    // 检查整行是否为空
    public static boolean isRowEmpty(Row row) {
        if (row == null) return true;

        for (int c = row.getFirstCellNum(); c < row.getLastCellNum(); c++) {
            Cell cell = row.getCell(c);
            if (!isCellEmpty(cell)) return false;
        }
        return true;
    }

    // 检查单个单元格是否为空
    public static boolean isCellEmpty(Cell cell) {
        if (cell == null) return true;

        switch (cell.getCellType()) {
            case BLANK:
                return true;
            case STRING:
                return cell.getStringCellValue().trim().isEmpty();
            default:
                return false;
        }
    }

    // 获取单元格的字符串值，通用处理所有数据类型
    public static String getCellStringValue(Cell cell) {
        if (isCellEmpty(cell)) return null;

        DataFormatter formatter = new DataFormatter();
        return formatter.formatCellValue(cell).trim();
    }

    // 将单元格值解析为整数
    public static Integer getCellIntegerValue(Cell cell) {
        try {
            if (cell == null) return null;

            switch (cell.getCellType()) {
                case NUMERIC:
                    return (int) cell.getNumericCellValue();
                case STRING:
                    return Integer.parseInt(cell.getStringCellValue().trim());
                default:
                    return null;
            }
        } catch (NumberFormatException e) {
            return null;
        }
    }
}
